package com.company.java.basic.day03;

import java.util.Scanner;

public class Day03_Test {
    public static void main(String[] args) {
        // 求两个整数的最大公倍数和最小公约数
        /*
        //公倍数；能被两数同时除尽的数（从小的一个数开始找）
        //公约数；该数能同时除尽这两个数（从大的一个数开始找）
        java.util.Scanner input = new Scanner(System.in);
        System.out.println("输入两个整数！");
        System.out.print("输入请输入第一个整数：");
        int a = input.nextInt();
        System.out.print("输入请输入第二个整数：");
        int b = input.nextInt();
        //判断两数是否大于零
        while (true){
            if (a<0 || b<0){
                System.out.println("输入有误！");
            }else {
                break;
            }
        }
        //判断大小
        int max = a>b? a:b;
        int min = a<b? a:b;
        //求最大公约数
        for (int i =min;i<=min;i--){
            if (a%i==0 && b%i==0){
                System.out.println("最大公约数"+i);
                break;
            }
        }
        //求最小公倍数
        for (int i=max;i<=a*b;i++){
                if (i%a==0 && i%b==0){
                    System.out.println("最小公倍数:"+i);
                    break;
                }
        }
        */

        // 输入生日求星座
        /*
        //1、输入生日
        Scanner input = new Scanner(System.in);
        System.out.print("输入月份：");
        int month = input.nextInt();
        System.out.print("输入日期：");
        int day = input.nextInt();
        // 根据日期输出星座

        if (month==1 && day>=20 || month==2 && day<=18){
            System.out.println("水瓶座");
        }else if (month==2 && day>=19 || month==3 && day<=20){
            System.out.println("双鱼座");
        }else if (month==3 && day>=21 || month==4 && day<=19){
            System.out.println("白羊座");
        }else if (month==4 && day>=20 || month==5 && day<=20){
            System.out.println("金牛座");
        }else if (month==5 && day>=21 || month==6 && day<=21){
            System.out.println("双子座");
        }else if (month==6 && day>=22 || month==7 && day<=22){
            System.out.println("巨蟹座");
        }else if (month==7 && day>=23 || month==8 && day<=22){
            System.out.println("狮子座");
        }else if (month==8 && day>=23 || month==9 && day<=22){
            System.out.println("处女座");
        }else if (month==9 && day>=23 || month==10 && day<=23){
            System.out.println("天秤座");
        }else if (month==10 && day>=24 || month==11 && day<=22){
            System.out.println("天蝎座");
        }else if (month==11 && day>=23 || month==12 && day<=21){
            System.out.println("双鱼座");
        }else if (month==12 && day>=22 || month==1 && day<=19){
            System.out.println("双鱼座");
        }
*/

        // 已知2019年1月1日是星期二，从键盘输入2019任意一天，求星期几
        /*
        //1、输入月日
        Scanner input = new Scanner(System.in);
        System.out.print("输入月份：");
        int month = input.nextInt();
        System.out.print("输入日期：");
        int day = input.nextInt();
        //2、首先需要知道这一天是2019年的第几天
        int days = day;
        switch (month){
            case 12: days +=30;
            case 11: days +=31;
            case 10: days +=30;
            case 9: days +=31;
            case 8: days +=31;
            case 7: days +=30;
            case 6: days +=31;
            case 5: days +=30;
            case 4: days +=31;
            case 3:
                if (2019%4==0 && 2019%100!=0 || 2019%400==0){
                    days +=29;
                }else days += 28;
            case 2: days +=31;
        }
        //3、再由1月1日是星期二来推算这一天是星期几，第一天是星期二，
        //可知week = days%7+1
        int week = days%7+1;
        System.out.println("该天是星期："+(week==7?"日":week));
        */

        // 用键盘输入年月日，用for+if实现，这一年是当年的第几天
        /*
        //1、输入年月日
        Scanner input = new Scanner(System.in);
        System.out.print("输入年份：");
        int year = input.nextInt();
        System.out.print("输入月份：");
        int month = input.nextInt();
        System.out.print("输入日期：");
        int day = input.nextInt();
        //2、用for循环按月来累加
        int days = day;
        for (int i=1;i<month;i++){
            if (i==1 || i==3 || i==5|| i==7|| i==8|| i==10|| i==12){
                days += 31;
            //3、闰年二月份特殊处理
            }else if(i==2){
                if (year%4==0 && year%100!=0 || year%400==0){
                    days += 29;
                }else days +=28;
            }else days +=30;
        }
        System.out.println("是第："+days+"天");
        */

        // 假设从2000年1月1日开始三天打鱼两天晒网，输入年月日，判断是打鱼还是晒网
         /*
        //1、输入年月日
        Scanner input = new Scanner(System.in);
        System.out.print("输入年份：");
        int year = input.nextInt();
        System.out.print("输入月份：");
        int month = input.nextInt();
        System.out.print("输入日期：");
        int day = input.nextInt();
        int days = day;
        //2、判断从2000.1.1到该年1.1是多少天闰年多加一天
        for (int i=2000;i<year;i++){
            if (year%4==0 && year%100!=0 || year%400==0){
                days += 366;
            }else days += 365;
        }
        //3、判断改天是这一年的第多少天，二月特殊处理
        for (int i=1;i<month;i++){
            if (i==1 || i==3 || i==5|| i==7|| i==8|| i==10|| i==12){
                days += 31;
                //3、闰年二月份特殊处理
            }else if(i==2){
                if (year%4==0 && year%100!=0 || year%400==0){
                    days += 29;
                }else days +=28;
            }else days +=30;
        }
        //4、推算该天是打鱼还是晒网，三天唯一周期1打鱼23晒网
        int isFish = days%3;
        System.out.println("他在"+(isFish==1?"打鱼":"晒网"));

         */

        //输入一个奇数，打印相应的菱形（想要改变菱形大小可以加空格）
        /*
        //输入整数
        Scanner input = new Scanner(System.in);
        System.out.print("输入一个奇数：");
        int num = input.nextInt();
        //打印上半部
        //定义参数
        // 由于是奇数，所以上半部分需要打印的次数为num/2
        int count =0;
        for(int i=1;i<=num/2;i++){
            //打印空格
            //第一行的空格刚好等于num/2，后边每当行数加一，空格数就减一
            for (int j=i;j<=num/2;j++){
                System.out.print(" ");
            }
            //打印*
            // 找出规律，每一行的*的个数=行数+行数-1
            // 所以有两个算法，一就是引入count参数=行数-1
            //算法一
            for (int j=1;j<=i+count;j++){
                System.out.print("*");
            }
            //算法二
            for (int j=1;j<=2*i-1;j++){
                System.out.print("*");
            }
            count++;
            //换行
            System.out.println("");
        }

        //打印中间
        //打印*
        for (int i=1;i<=num;i++){
            System.out.print("*");
        }
        //换行
        System.out.println("");
        //打印下半部
        //参数
        int count1 =num-2;
        for (int i=1;i<=num/2;i++){
            //打印空格
            // 下半部分空格依次递增
            for (int j=1;j<=i;j++){
                System.out.print(" ");
            }
            //打印*
            // *数则是每次减2，所以引入count来计算
            //该行需要打印的数量
            for (int j=1;j<=count1;j++){
                System.out.print("*");
            }
            count1 -= 2;
            //换行
            System.out.println("");
        }

         */

        //输入任意正整数，打印相应的菱形
        /*
        //输入整数
        Scanner input = new Scanner(System.in);
        System.out.print("输入一个正整数：");
        int num = input.nextInt();
        //打印上半部
        for(int i=1;i<num;i++){
            //打印空格，空格数递减
            for (int j=i;j<num;j++){
                System.out.print(" ");
            }
            //打印*，依次递增
            for (int j=1;j<=i;j++){
                System.out.print("* ");
            }
            //换行
            System.out.println("");
        }

        //打印中间
        //打印*
        for (int i=1;i<=num;i++){
            System.out.print("* ");
        }
        //换行
        System.out.println("");
        //打印下半部
        //参数
        for (int i=1;i<=num;i++){
            //打印空格依次递增
            for (int j=1;j<=i;j++){
                System.out.print(" ");
            }
            //打印*，依次递减
            for (int j=i;j<=num-1;j++){
                System.out.print("* ");
            }
            //换行
            System.out.println("");
        }

         */

        //输入任意正整数，打印相应的菱形的四边（只有首位打印*）
         /*
        //输入整数
        Scanner input = new Scanner(System.in);
        System.out.print("输入一个正整数：");
        int num = input.nextInt();
        //打印上半部
        for(int i=1;i<num;i++){
            //打印空格
            for (int j=i;j<num;j++){
                System.out.print(" ");
            }
            //打印*，
            for (int j=1;j<=i;j++){
                if(j==1 || j==i){
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
            }
            //换行
            System.out.println("");
        }

        //打印中间
        //打印*
        for (int i=1;i<=num;i++){
        if(i==1 || i==num){
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
        }
        //换行
        System.out.println("");
        //打印下半部
        //参数
        for (int i=1;i<=num;i++){
            //打印空格
            for (int j=1;j<=i;j++){
                System.out.print(" ");
            }
            //打印*
            for (int j=i;j<=num-1;j++){
                if(j==i || j==num-1){
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
            }
            //换行
            System.out.println("");
        }

         */
    }
}
